package profile

import (
	"time"

	"gorm.io/gorm"
)

// UserProfile 用户档案
type UserProfile struct {
	ID        uint           `gorm:"primarykey" json:"id"`
	TenantID  uint           `gorm:"index;not null"` // 租户ID
	UserID    uint           `gorm:"uniqueIndex;not null" json:"user_id"`
	RealName  string         `gorm:"size:50" json:"real_name"`
	IDCard    string         `gorm:"size:50" json:"id_card"`
	Gender    int            `gorm:"default:0" json:"gender"` // 0:未知 1:男 2:女
	Birthday  *time.Time     `json:"birthday"`
	Email     string         `gorm:"size:100" json:"email"`
	Phone     string         `gorm:"size:20" json:"phone"`
	Address   string         `gorm:"size:255" json:"address"`
	Avatar    string         `gorm:"size:255" json:"avatar"`
	CreatedAt time.Time      `json:"created_at"`
	UpdatedAt time.Time      `json:"updated_at"`
	DeletedAt gorm.DeletedAt `gorm:"index" json:"-"`
}

// TableName 表名
func (UserProfile) TableName() string {
	return "user_profile"
}

type UserSetting struct {
	ID        uint           `gorm:"primarykey" json:"id"`
	TenantID  uint           `gorm:"index;not null"` // 租户ID
	UserID    uint           `gorm:"uniqueIndex;not null" json:"user_id"`
	Key       string         `gorm:"size:50;not null" json:"key"`
	Value     string         `gorm:"size:255;not null" json:"value"`
	ValueType int            `gorm:"default:1" json:"value_type"` // 1:字符串 2:数字 3:布尔值 4:JSON
	CreatedAt time.Time      `json:"created_at"`
	UpdatedAt time.Time      `json:"updated_at"`
	DeletedAt gorm.DeletedAt `gorm:"index" json:"-"`
}

// TableName 表名
func (UserSetting) TableName() string {
	return "user_setting"
}
